/**
 * 
 */
package cn.edu.hstc.bean.utils;

import org.jsoup.select.Elements;

import android.net.http.AndroidHttpClient;
import cn.edu.hstc.app.Constant;
import cn.edu.hstc.bean.ScheduleTable;
import cn.edu.hstc.bean.ScheduleTable.Course;
import cn.edu.hstc.common.HttpUtils;

/**
 * @Description
 * @author act262
 * @version 1.0
 * @since 2014-4-30 下午6:10:23
 * 
 */
public class ScheduleUtils {

	/**
	 * @param client
	 *            android http client
	 * @param info
	 *            参数1:学号 ;参数2:姓名
	 * @return
	 */
	public static ScheduleTable getSchedule(AndroidHttpClient client, String... info) {
		String response = HttpUtils.getHttpResponse(client, Constant.JWGL_USER_SCHEDULE_URL, info);
		if (null == response) {
			return null;
		} else {
			// System.out.println(response);

			return getSchedule(response);
		}
	}

	/**
	 * 根据输入内容转化为课程表实体
	 * 
	 * @param content
	 *            输入内容
	 * @return 找到所有的信息返回一个课程表对象,否则返回空;
	 */
	private static ScheduleTable getSchedule(String content) {
		ScheduleTable scheduleTable = new ScheduleTable();
		// 10行 7列 , 7天 ,每天10节课
		Course[][] courses = new Course[10][7];

		// 匹配行选择器
		String rowRegex = "div.main_box div.mid_box span.formbox table#Table6.blacktab tbody tr";

		// 所有的课程表行元素
		Elements rowElements = DocumentUtils.getDocument(content).select(rowRegex);

		// 从0开始计算行数,第2行开始才是课程表的内容
		for (int i = 2; i < rowElements.size(); i++) {

			// 获取到该行的所有列元素
			Elements elements = rowElements.get(i).select("td[align=Center]");

			// 第2,4,6,8,10行
			if (i % 2 == 0) {
				// 列数
				for (int j = 0; j < elements.size(); j++) {

					// 分割 内容,
					String[] result = elements.get(j).text().split(" ");

					Course course = new Course();
					// 当前列只有在有课程时才能分割
					if (result.length == 4) {
						course.setSubject(result[0]);
						course.setWhen(result[1]);
						course.setTeacher(result[2]);
						course.setAddress(result[3]);
					}
					courses[i - 2][j] = course;
				}
			}
			// 其他行显示为空
			else {
				for (int j = 0; j < 7; j++) {
					courses[i - 2][j] = new Course();
				}
			}
		}

		scheduleTable.setCourses(courses);
		return scheduleTable;
	}
}
